Function.prototype.myApply = function (thisArg = window, args) { // 在html中才有window属性，在node环境下报错
    const fn = Symbol('fn')        // 声明一个独有的Symbol属性, 防止fn覆盖已有属性
    console.log(this);
    // thisArg = thisArg || window    // 若没有传入this, 默认绑定window对象
    thisArg[fn] = this              //  将this指向的Function 存入 fn属性中
    const result = thisArg[fn](...args)  // 执行当前函数
    delete thisArg[fn]              // 删除我们声明的fn属性
    return result                  // 返回函数执行结果
}

//测试

function foo() {
    console.log(this.sname);
}

var obj = {
    sname: 'qaq'
}

foo.myApply(obj, [])

